using System.Runtime.InteropServices;
using System;
using Framework;

public struct TestStruct
{
    public char bool1;
    public char bool2;
    public int num1;
    
    public int num2;

    public void Test()
    {

    }
}



public class TestClass
{
    public static string TestStr {
        get
        {
            return "aaaaa";
        }
    }

    public static string TestInfo()
    {
        return "Test1";
    }

    public void Test()
    {

    }

    public virtual void DoTest()
    {
        // UnityEngine.Debug.Log("TestClass--->DoTest");
        Type type = this.GetType().BaseType;
        // this.GetType().GetType
        UnityEngine.Debug.Log("TestClass--->DoTest:" + type + ";" + type.GetPropertyRecursion("TestStr"));
        type = typeof(TestClass2);
        UnityEngine.Debug.Log("TestClass--->DoTest2:" + type + ";" + type.GetPropertyRecursion("TestStr"));
    }
}

public class TestClass2 : TestClass
{
    // new public static string TestStr {
    //     get
    //     {
    //         return "balalala";
    //     }
    // }

    new public static string TestInfo()
    {
        return "Test2";
    }

    public void DoTest2()
    {
        UnityEngine.Debug.Log("TestClass2--->DoTest2");
    }

    public override void DoTest()
    {
        base.DoTest();
        UnityEngine.Debug.Log("TestClass2--->DoTest");
    }
}


public class TestClass3 : TestClass2
{
    public override void DoTest()
    {
        UnityEngine.Debug.Log("TestClass3--->DoTest");
        base.DoTest();
    }
}